const $_ = require('lodash');

let Permissions = function (opts) {
  this.cusId = undefined;
  this.cusPid = undefined;
  this.cusAid = [];
  this.appId = undefined;
  this.appPid = undefined;
  // this.afterUpdate = $_.isFunction(opts.afterUpdate) ? opts.afterUpdate : () => { };
  return this;
}

Permissions.prototype = {
  update: function (args) {
    if ($_.get(args, 'cusId', false)) { this.cusId = args.cusId }
    if ($_.get(args, 'cusPid', false)) { this.cusPid = args.cusPid }
    if ($_.get(args, 'cusAid', false)) { this.cusAid = args.cusAid }
    if ($_.get(args, 'appId', false)) { this.appId = args.appId }
    if ($_.get(args, 'appPid', false)) { this.appPid = args.appPid }
    // console.log(this)
    return this
  },
  __isEmptyAid: function () {
    let res = {
      code: $_.get(this, 'appId', false)
    }
    return {
      res: []
    }

    if (true) {
      return Promise.resolve({ msg: `无指定应用，请加载该客户在该平台下的所有消息。` })
    }

  },
  getPermissions4ajaxMsg: function (usePromise) {
    if (!$_.get(this, 'cusId', false)) {
      return Promise.reject({ msg: `无指定客户，请确认相关参数` })
    }
    if (!$_.get(this, 'cusPid', false)) {
      return Promise.reject({ msg: `客户无关联平台，请与后台确认相关参数` })
    }
    if (!$_.get(this, 'appId', false)) {
      return Promise.resolve({ msg: `无指定应用，请加载该客户在该平台下的所有消息。` })
    }
    if ($_.get(this, 'cusPid', NaN) !== $_.get(this, 'appPid', NaN)) {
      return Promise.reject({ msg: `指定平台与用户平台不符` })
    }
    if (!this.cusAid.includes(this.appId)) {
      return Promise.reject({ msg: `有效列表中不包含当前应用，请确认相关参数` })
    }
    return Promise.resolve({ msg: `无异常，请加载该客户在该应用下的消息。` })
  },
  getPermissions4soloSend: function () {
    if (!$_.get(this, 'cusId', false)) {
      return { canUse: false, msg: `无指定客户，请确认相关参数` }
    }
    if (!$_.get(this, 'cusPid', false)) {
      return { canUse: false, msg: `客户无关联平台，请与后台确认相关参数` }
    }
    if (!$_.get(this, 'appId', false)) {
      return Promise.resolve({ msg: `无指定应用，请加载该客户在该平台下的所有消息。` })
    }
    if ($_.get(this, 'cusPid', NaN) !== $_.get(this, 'appPid', NaN)) {
      return Promise.reject({ msg: `指定平台与用户平台不符` })
    }
    if (!this.cusAid.includes(this.appId)) {
      return Promise.reject({ msg: `有效列表中不包含当前应用，请确认相关参数` })
    }
    return
  },
  getPermissions4massSend: function () {
    return
  },
}
export default Permissions;
